//
//  WBStatusListViewModel.swift
//  Inpro
//
//  Created by 彭灿 on 16/10/9.
//  Copyright © 2016年 Roble. All rights reserved.
//

import Foundation


/// 微博数据列表视图模型
/*
 父类的选择
 - 如果需要使用 ·kvc· 或者字典模型框架设置对象值, 类就需要继承自 NSObject
 - 如果类知识包装一些代码(写了一些函数), 可以不用任何父类, 好处: 更加轻量级
 - 提示: 如果用 OC 写， 一律都继承自 NSObject 即可
 
 使命: 负责微博的数据处理
 1. 字典转模型
 2. 下拉 / 上拉 刷新数据处理
*/
class WBStatusListViewModel {
    
    /// 微博模型数组懒加载
    lazy var statusList = [WBStatus]()
    
    /// 加载微博列表
    ///
    /// - pullup completion: 是否上拉刷新标记
    /// - parameter completion: 完成回调(网络请求是否成功)
    func loadStatus(pullup: Bool, completion: @escaping (_ isSuccess: Bool)->()) {
        // since_id 取出数组中的第一条微博的 id
        let since_id  = pullup ? 0 : (statusList.first?.id ?? 0)
        // 上拉刷新, 取出数组的最后一条微博 id
        let max_id = !pullup ? 0 : (statusList.last?.id ?? 0)
        
        WBNetworkManager.shared.statusList(since_id: since_id, max_id: max_id) { (list, isSuccess) in
            
            // 1.字典转模型
            guard let array = NSArray.yy_modelArray(with: WBStatus.self, json: list ?? []) as? [WBStatus] else {
                
                completion(isSuccess)
                return
            }
            // 2.拼接数据
            if pullup { // 上拉刷新
                self.statusList += array
            } else {// 下拉刷新
                self.statusList = array + self.statusList
            }
            
            // 3.完成回调
            completion(isSuccess)
        }
    }
    
}
